iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
自我挑戰組

30天玩轉規劃LINE BOT系列 第 19

第19天:增加 line bot 機器人功能(三)

  • 分享至 

  • xImage
  •  

接下來要製作的是【Quick Reply】功能是,可以提供多可選項,讓用戶能快速選擇需要的回覆,以減少客戶打字,也可以方便我們管理客戶發送的訊是能格式一至,好方便整理。
通常可以作為,日期或時間的選項。

【line bot sdk python:quickreply 程式碼】

text_message = TextSendMessage(text='Hello, world',
                               quick_reply=QuickReply(items=[
                                   QuickReplyButton(action=MessageAction(label="label", text="text"))
                               ]))

然後在service.py上定義一個service_select_event,並將剛剛的程式碼貼入。

def service_select_event(event):
    text_message = TextSendMessage(text='Hello, world',
                                   quick_reply=QuickReply(items=[
                                       QuickReplyButton(action=MessageAction(label="label", text="text"))
                                   ]))
    line_bot_api.reply_message(
        event.reply_token,
        [text_message]
    )

https://ithelp.ithome.com.tw/upload/images/20221004/20144761C7NbS6HxAh.png
同時也又看到QuickReply、QuickReplyButton出現紅底波浪紋,所以也要到line_bot_api上匯入這兩個,這樣紅底波浪就會消失。

這樣初步建立好之後,我需要讓用戶選擇日期,所以我需要做幾個配置。

建立資料集,以及取得今天日期,所以在添加以下程式碼。

    data = dict(parse_qsl(event.postback.data))
    quick_reply_buttons = []
    today = datetime.datetime.today().date()

https://ithelp.ithome.com.tw/upload/images/20221004/20144761aCeSR7bTgn.png

再來設置一個for迴圈,因為是要做預約功能,所以我要產出讓客戶選擇包含今天的這七天日期給客戶選擇,所以我設定(1, 8),這樣設定是會讓他抓到8-1的數字,也就是會出1,2,3,4,5,6,7這樣。

    for x in range(1, 8):
        day = today + datetime.today(days=x)

https://ithelp.ithome.com.tw/upload/images/20221004/20144761oN8UtGIUs5.png

在來就是透過剛剛的迴圈來建立button,button的action是使用PostbackAction,依序是出現日期選項,然後客戶回傳要預約的日期,最後回傳data。最後再透過先前建立的text_message進行開場問話。

quick_reply_button = QuickReplyButton(
            action=PostbackAction(label=f'{day}',
                                  text=f'I would like to make an appointment for the day of {day}',
                                  data=f'action=select_time&service_id={data["service_id"]}&data={data}')
        )
        quick_reply_button.append(quick_reply_button)

https://ithelp.ithome.com.tw/upload/images/20221004/201447619kEE4QwT2g.png

在來回到主程式app.py,如果action是select_date,這樣就會呼叫service_select_event的程式。

    elif data.get('action') == 'select_date':
        service_select_event(event)

    print('date:', data.get('date'))

https://ithelp.ithome.com.tw/upload/images/20221004/20144761J7o8LDcgrE.png

以上就是Quick Reply的設置。

下一篇,後續設置


上一篇
第18天:增加 line bot 機器人功能(二)
下一篇
第20天:增加 line bot 機器人功能(四)
系列文
30天玩轉規劃LINE BOT30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言